查看原文
其他

数值实战:高效率搭建战斗数值框架

2016-08-26 张小勇 Gad-腾讯游戏开发者平台

刚入行的时候,我调整一版完整的数值需要将近一周的时间,几个EXCEL之间来回切换查看再汇总统计让我十分忙乱,按照新的规划重新计算大量的数值让我非常疲惫,填写几十份的配置表让我无比痛苦。后来我不断地优化自己的数值框架,把一些EXCELVBA能处理的问题全部在框架中一次性解决,现在我只需要用半天就能调整一版完整的数值。我的数值框架将我从高级填表员的工作中解救出来,让我能够将更多的时间和精力放在数值体验上,我的工作效率和质量都提高了一个档次。

本文将分享一套以战斗为主的数值框架,讲述一下做数值框架的思路和方法,希望能对大家有所帮助。

前期工作


一般而言,我做数值框架会从确定属性种类和战斗公式开始。


属性种类


很多游戏喜欢将属性分为一级属性和二级属性,这样做最大的好处是方便做出“加点”的玩法,但一般需要辅助以比较多的属性说明,否则玩家会比较难理解,你能直接看懂下面这张图中的几个一级属性代表什么意思么?

因为我做的游戏都没有加点这个概念,所以我都是直接用生命、攻击、防御、暴击这些属性种类,自己做着方便,玩家也容易理解。

几乎所有游戏中的属性类型都由血攻防这样的基础属性和暴击格挡穿透之类的高级属性组成,个人建议再规划一个超级属性超级属性指的是对PVP有决定性影响且十分难升满的属性,超级属性可以承载大R玩家的追求和消费,比如《拳皇98OL》在传统卡牌的基础上将“先手值”独立出来作为“超级属性”,其中很多的大R玩家为了追求“先手值”这一项属性消费了几万甚至十几万。

战斗公式

战斗公式不是本文的重点,相关的文章也很多,不再细述,简单说几点自己的体会:


1没有最好的,只有最合适的:刚入行的时候觉得像《WOW》、《暗黑》之类的战斗公式才叫牛逼,第一次看到damage=atk^2/(atk+def)的时候虽然看不懂,但是感觉简直屌爆了。当时最鄙视的就是减法公式,damage=atk-def,尼玛小学生都会算,一点都不高端。后来发现《放开那三国》用的是减法、《传奇》用的是减法、畅销榜恶霸《梦幻西游》用的也是减法,自己用了一次之后才深深地体会到了减法公式易做反馈、适合做小差距、适合做小数值的特点,拿来做MMORPG十分好用。但如果是做MOBA,需要计算大量的平衡关系,就最好选用damage=atk*(c/(def+c))这种公式,因为这种公式下确定一个英雄的强弱只需要这个英雄自身的属性就可以。2关键在于怎么用: 同样是减法公式,《传奇》和《传奇xxx私服》的体验完全不同。合适的公式确实会让之后的工作舒爽一些,但最终的体验如何还是要看如何使用。3多动手: 网上有很多战斗公式相关的文章,一般都是写一下公式,找个例子算一下,再做几个函数图,最后总结一下。我自己就看了很多这样的文章,收获不小,不过还是有很多疑惑没有解开。其实很多时候遇到公式上的疑惑,自己算一算,对比对比,在相关游戏中跑一跑,会获得更深入更透彻的理解。


数值框架中要明确地列出都有哪些属性和这些属性的详细说明,也要将详细的伤害判定流程和伤害计算公式写出来。这样既能防止自己不小心遗忘,也能方便以后的交接。

职业设定

职业设定一般而言有三个基本的目的:

1职业之间相对平衡(或是循环克制)2职业差异化:不同职业的作用和体验不同3整体战斗体验好:战斗节奏好,战斗时长能够接受


在数值框架中职业设定主要包含两大模块:属性模型,技能设定。

属性模型主要是为了方便调整平衡、战斗时长和职业差异化,其本质就是各职业属性的比例关系,个人的习惯是将属性模型中加入【技能输出系数】和【技能生存系数】两个数值,分别代表算上技能之后输出会变为几倍和生存能力会变为几倍,然后在技能设定中根据这两个系数去调整具体的技能数值。

技能设定时,需要运算多种技能的实际数值影响。其中倍数伤害、属性类buff、眩晕等类型的技能是可以直接转换成有效输出的,相对比较好算,如果不会的话找个数值策划群问一下就可以。而类似于加速、位移、陷阱之类的技能难以量化,需要不断地实测调整。各种技能的具体处理方式不再展开描述。

一些游戏将不同职业的属性比例做的完全相同,然后通过技能设定达到平衡和差异化的目的,十分简单粗暴,各位可以尝试用一下。

属性分配

个人习惯用最大模型和系统分配比例来做不同系统间的属性分配,再在各个系统内细调,这样做的好处是大的改动比较快,细节体验也能调。


系统间分配


为了方便说明,我们假设不同职业的属性比例现在完全相同,这样我们只需要做一套最大模型。将最大属性模型中的每一项属性与对应的各个比例相乘即可得到每个系统应分配的具体属性。大致结构如同下表:

说是“最大”属性模型,但往往扩展系统时会发现属性不够大,因此到后期属性比例中一些属性的比例总和会超过100%

最大属性模型一般都是通过将职业直接放大得到,但要注意一些公式将各职业属性等比放大后会破坏平衡,比如damage=atk*(c/(def+c))

系统内分配


某个系统的的属性分配主要包含4个模块:

1可分配属性:对应系统间分配出来的属性、2分配思路:文字描述,记录自己在这个养成系统是用怎样的思路分配每级的属性的,否则到后面自己都会忘记为何这样分配,如果有特殊的计算公式的话我也会记录在这里。3分配参数:即使是几百上千级的成长,也可根据几个参数和公式来调控。


4最终属性表:通过上面三个模块计算得出的最终结果,如下图


经济关联


做经济系统时,我会将每天把消费产出全部拿完的玩家定为标准玩家,然后可以通过产出和消耗预算出标准玩家的成长情况。因为没有办法确定玩家具体会进行什么样的操作,所以这里的一切计算都是估算,比如玩家可能优先把材料全用来升武器,也可能材料全都放背包里不用,没有办法确定,所以我就按照玩家将所有材料平均分配到每一件装备上培养来估算玩家的装备培养等级。

所有系统的经济做完后,我们可以得到一张表,里面有玩家在每个等级时各个养成系统的等级和玩家的总属性,类似下图:

怪物属性


有了通过经济关联算出的玩家属性,我们可以很轻松地得出各个等级对应的每种怪物属性。为了调整方便,我用怪物被玩家打时的生存时间和怪物打死玩家要用的时间来做参数。最终会得到一个类似于下图的表:

如果没有特殊需求的话,所有怪物都可以从这个表中直接取值。

做怪物数值时需要注意的点:


11上图中的表格没有技能,实际使用时需要注意技能的计算2

没有特殊需求的话,就将所有种类怪物的防御统一为一个值,比如玩家攻击的80%或是直接用0。

配置导出


将计算结果按照配置的形式关联到另一张表,然后通过VBA导出配置表,并不是很难,一会提供代码,先简单说下使用我的导出需要注意的地方:

1要在b1单元格填入导出后的表名2需要导出的工作表的命名中需要有“-3”


3代码的本质是将第六行以下所有有内容的单元格复制到另一个EXCEL中,并将该EXCEL重命名存在与数值框架相同路径下的output文件夹中4用这种方式导出的表需要另建一个文档写相关的配置说明5需要注意一些美术资源的配置6要养成在数值框架中改表导出的习惯


这个导表VBA并不是很强大,使用不熟练时很容易出错,但一旦用顺手之后效率会提升很多倍。

VBA代码如下:

导出单个配置


导出所有配置


结语

这套框架正在用于一个研发中的游戏,所以不能直接分享出来。文章中的截图是我按照框架结构简化后做的一个EXCEL,为了赶上征文的投稿时间,这份EXCEL还没有真正实现框架中的所有功能,这两天我会将其完善再分享出来,到时候结合着EXCEL来看这篇文章会更容易理解。


近期热文

数值策划:教你将战斗力数字化

数值设计的思想体系的养成之路丨Gad资料库



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存